home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / macurl2path.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  3KB  |  104 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''Macintosh-specific module for conversion between pathnames and URLs.
  5.  
  6. Do not import directly; use urllib instead.'''
  7. import urllib
  8. import os
  9. __all__ = [
  10.     'url2pathname',
  11.     'pathname2url']
  12.  
  13. def url2pathname(pathname):
  14.     """OS-specific conversion from a relative URL of the 'file' scheme
  15.     to a file system path; not recommended for general use."""
  16.     tp = urllib.splittype(pathname)[0]
  17.     if tp and tp != 'file':
  18.         raise RuntimeError, 'Cannot convert non-local URL to pathname'
  19.     
  20.     if pathname[:3] == '///':
  21.         pathname = pathname[2:]
  22.     elif pathname[:2] == '//':
  23.         raise RuntimeError, 'Cannot convert non-local URL to pathname'
  24.     
  25.     components = pathname.split('/')
  26.     i = 0
  27.     while i < len(components):
  28.         if components[i] == '.':
  29.             del components[i]
  30.             continue
  31.         if components[i] == '..' and i > 0 and components[i - 1] not in ('', '..'):
  32.             del components[i - 1:i + 1]
  33.             i = i - 1
  34.             continue
  35.         if components[i] == '' and i > 0 and components[i - 1] != '':
  36.             del components[i]
  37.             continue
  38.         i = i + 1
  39.     if not components[0]:
  40.         rv = ':'.join(components[1:])
  41.     else:
  42.         i = 0
  43.         while i < len(components) and components[i] == '..':
  44.             components[i] = ''
  45.             i = i + 1
  46.         rv = ':' + ':'.join(components)
  47.     return urllib.unquote(rv)
  48.  
  49.  
  50. def pathname2url(pathname):
  51.     """OS-specific conversion from a file system path to a relative URL
  52.     of the 'file' scheme; not recommended for general use."""
  53.     if '/' in pathname:
  54.         raise RuntimeError, 'Cannot convert pathname containing slashes'
  55.     
  56.     components = pathname.split(':')
  57.     if components[0] == '':
  58.         del components[0]
  59.     
  60.     if components[-1] == '':
  61.         del components[-1]
  62.     
  63.     for i in range(len(components)):
  64.         if components[i] == '':
  65.             components[i] = '..'
  66.             continue
  67.     
  68.     components = map(_pncomp2url, components)
  69.     if os.path.isabs(pathname):
  70.         return '/' + '/'.join(components)
  71.     else:
  72.         return '/'.join(components)
  73.  
  74.  
  75. def _pncomp2url(component):
  76.     component = urllib.quote(component[:31], safe = '')
  77.     return component
  78.  
  79.  
  80. def test():
  81.     for url in [
  82.         'index.html',
  83.         'bar/index.html',
  84.         '/foo/bar/index.html',
  85.         '/foo/bar/',
  86.         '/']:
  87.         print '%r -> %r' % (url, url2pathname(url))
  88.     
  89.     for path in [
  90.         'drive:',
  91.         'drive:dir:',
  92.         'drive:dir:file',
  93.         'drive:file',
  94.         'file',
  95.         ':file',
  96.         ':dir:',
  97.         ':dir:file']:
  98.         print '%r -> %r' % (path, pathname2url(path))
  99.     
  100.  
  101. if __name__ == '__main__':
  102.     test()
  103.  
  104.